Hugging Face peft

Hugging Face 的 peft 库是一种实现参数高效微调(Parameter-Efficient Fine-Tuning,PEFT)的方法,它可以有效地将预训练的语言模型(PLMs)适应到各种下游应用,而无需微调所有模型的参数。微调大规模 PLMs 通常代价高昂,因此,PEFT 方法只微调少量(额外的)模型参数,从而大大降低了计算和存储成本。最新的 SOTA PEFT 技术实现了与全微调相当的性能

peft 库与 Hugging Face Accelerate 库无缝集成,支持利用 DeepSpeedBig Model Inference 来处理大规模模型。它支持的方法包括:

peft 库提供了一些使用案例,包括使用消费级硬件通过适应 LLMs 来获得与全微调相当的性能,以及参数高效调整扩散模型等。此外,peft 库还支持使用 Accelerate 进行分布式训练和推理,以及使用 Accelerate 的 DeepSpeed 集成进行 PEFT 模型训练等。

主题

使用 peft 库

以下是一个简单的示例,展示了如何使用 peft 库进行模型微调:

from transformers import AutoModelForSeq2SeqLM
from peft import get_peft_config, get_peft_model, LoraConfig, TaskType

model_name_or_path = "bigscience/mt0-large"
tokenizer_name_or_path = "bigscience/mt0-large"

peft_config = LoraConfig(
	task_type=TaskType.SEQ_2_SEQ_LM, 
	inference_mode=False, 
	r=8, 
	lora_alpha=32, 
	lora_dropout=0.1
)

model = AutoModelForSeq2SeqLM.from_pretrained(model_name_or_path)
model = get_peft_model(model, peft_config)
model.print_trainable_parameters()
# output: trainable params: 2359296 || all params: 1231940608 || trainable%: 0.19151053100118282

peft 库的应用场景

peft 库可以应用于各种场景,包括:

支持的模型

peft 库支持各种模型,包括 GPT-2、Bloom、OPT、GPT-Neo、GPT-J、GPT-NeoX-20B、LLaMA、ChatGLM、T5、BART、BERT、RoBERTa、Deberta、Deberta-v2 等。


本文作者:Maeiee

本文链接:Hugging Face peft

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!